โ RNS 1.4.2 released https://pypi.org/project/rns/
๐ฌค rns.recipes
top
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Retichat-ios Testing Needed โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Started by jrl290 ยท 2mo ago
Page 1 of 5
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
post-1
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ jrl290 #1 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โธ 2mo ago
Hello friends, many of you have already heard me describe this ongoing project. There
have been substantial changes to the code to hopefully improve reliability and
responsiveness, but I only have a limited test configuration to work with. I'm asking for
more people to test and give feedback
Retichat is another LXMF client but with some added capabilities mainly enabled by an
extension to the LXMF Propagation mechanism. Specifically:
โข Publish and Subscribe based chat rooms
โข True "Apple Push Notification Service" based push notifications in response to
propagation messages
โข Infrastructure-less group messaging (different from Publish and Subscribe)
App Store link: https://apps.apple.com/us/app/retichat/id6762225314. An Android version
is also in the works. Also, importantly, a default RFed instance is used if one isn't
specified so that Channels and Push notifications function for testers
Everything is open source and MIT license
โข App - https://github.com/jrl290/Retichat-ios
โข RFed node - https://github.com/jrl290/RFed
Child libraries (not meant for individual use)
โข https://github.com/jrl290/app-links
โข https://github.com/jrl290/LXMF-rust
โข https://github.com/jrl290/Reticulum-rust
Disclaimer There is substantial AI written code in this project. My first iPhone app
was published 15 years ago. It was written in Objective-C and the flagship iPhone at the
time was the 4s.
The Design and Scope of Retichat
The aim for Retichat is to provide a low friction user experience similar to Whatsapp or
Signal but without central servers of any kind (the beauty of Reticulum). It will
obfuscate many of the rougher edges such as announces and store-and-forward
configuration. And it will bend the low bandwidth forgiveness of Reticulum in favor of
responsiveness expected out of a typical chat app
Public backbone TCP interfaces are hardcoded and randomly selected by the app at default.
Multiple paths are tested for responsiveness when a message is sent. Additionally, a
default RFed node provided for now. At the same time, interfaces can be manually
designated. As can RFed or Propagation node
Lastly, Retichat's goal is adoption, but its purpose is communication readiness under
adverse conditions. LoRa will be supported. Voice and video will not be
Details: Group Messaging
The group messaging in Retichat is designed specifically to require no additional
infrastructure. As such, a minimal amount of statefulness is added. Specifically:
โข an arbitrary group ID that has no meaning outside of the group
โข a list of participants who have been invited
โข and the annotations of who has accepted the invite (and not explicitly left)
One user starts the group with a specific set of invitees. The invites include the list
of invitees. Accepting the invite sends a message to the group designating them an active
participant
Each participant is responsible for distributing its own sent messages to every other
participant individually. Additionally, for low bandwidth purposes, a participant may ask
another participant to distribute its sent message (which that proxy may then pass to
another participant). In this way, both fanout and round robin are implemented as is most
efficient and most necessary
And that is the scope of group mode in Retichat. Again, spec'd specifically for minimal
additional coordination or infrastructure
โ 0 โ 0 โค 5
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
post-2
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ jrl290 #2 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โธ 2mo ago
Details: RFed extension to LXMF Propagation
LXMF Prop
The premise of LXMF Propagation is simple, elegant, and also extremely powerful. It is a
coordination-less way to provide infrastructure services like store-and-forward. These
infrastructure nodes find and synchronize with each other, so even when one device is
using one prop node, it still receives messages from another device using a different
prop node. The only requirement that needs to be fulfilled is that those nodes are
designated hard points with higher reliability.
So when your device is offline, the hard point stays online to buffer data that is
addressed to you
RFed Channels
RFed extends this with additional logic in order to provide Subscriber based data
distribution. Instead of holding data to be forwarded to one device, it holds data for a
communal address and then forwards that data to every subscriber of that address.
The format of a channel address is the same as the Reticulum destination addresses:
<arbitrary string>.<aspect>.<aspect>... However, that is then hashed into both the
destination address and the identity key pair. This allows for both public and private
channels, with "public" being the first element in public channels.
The benefit of organizing channels this way is that all data is still encrypted to RFed
and transport nodes. The only information the network needs to see is the destination
hash, which itself is a mathematical trap door. The subscribers to all channels must
share the channel destination string out-of-band
Subscribers register their destination (with proof of identity) and a channel destination
with the RFed node. Channel messages are synchronized with other RFed nodes which then
distribute the message to their subscribers. All channels are ephemeral. Every
destination string is a channel.
The actual payload is double wrapped in the same way LXMF Propagation is double wrapped.
The first message payload is wrapped in the LXMF packet, addressed to its intended
recipient. That packet is then wrapped in the LXMF Propagation packet, addressed to the
lxmf.propagation destination of the propagation node. The Propagation node unwraps its
payload. It then stores and synchronizes the LXMF packet with other propagation nodes for
future delivery. When it is delivered, the recipient uses its private key to decrypt.
For channels, RFed receives the double wrapped packet on its rfed.channel.publish
destination, and extracts the payload LXMF packet. That packet is addressed to the
channel. RFed synchronizes the packet with other RFed nodes. And then for every
subscriber, it duplicates the packet and wraps it in a packet addressed to the
subscriber. The subscriber holds the key for itself to unwrap the outer packet. It also
holds the keys to the channel, which were shared as a destination string to subscribers
out-of-band.
RFed Notify
Another subscription type for RFed. This allows a destination to register itself (with
proof of identity), a source, and another destination address. That destination is
designated to receive a ping with no data aside from the registrant address whenever the
node receives a message addressed to the registrant.
This does not include direct messages. Sources include a specific channel that has been
subscribed to, or lxmf propagation addressed to the registrant.
For Retichat, the destinations that are notified are the bridges to Apple and Google's
mobile push notification systems. They are the best way to keep a chat app always able to
receive without a constantly maintained connection, which prevents low power radio
strategies and which Apple doesn't even allow in the background
It was also kept generalizable for other possible reasons where multiple devices or
mediums might want to react to a message sent to a specific destination.
RFed backup
Subscribers register with their own RFed node. Only that RFed node serves a channel
message to that subscriber. However, RFed nodes are configured to ask another RFed node
to watch it. If an RFed goes down, a watcher RFed node will adopt its subscribers for a
limited time
โ 0 โ 0 โค 1
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
post-3
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Torlando #3 โ
โ db3ffd2575469a78 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โธ 2mo ago
Does retichat still open a pre-emptive link when you open a conversation?
โ 0 โ 0 โค 0
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
post-4
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ jrl290 #4 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โธ 2mo ago
Torlando wrote:
> Does retichat still open a pre-emptive link when you open a conversation?
No. I did a test to see what results in the fastest message send. Bizarrely, a cold send
(that then establishes a link automatically) is faster than sending a message on a
preestablished link. I have no idea why. If an already established link in either
direction is available, it will use that link. But it won't do anything to keep a chat
link alive
What is done preemptively is a path request on all available interfaces to determine
accessibility. The path requests do not use any cached paths either. It assumes all chat
clients are not connected most of the time
To be sure, speed and responsiveness are considered paramount for TCP connections. It
will not be so aggressive on LoRa and similar low bandwidth interfaces
โ 0 โ 0 โค 0
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
post-5
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ joakim #5 โ
โ b918e659eeedac9a โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โธ 2mo ago
jrl290 wrote:
> Disclaimer There is substantial AI written code in this project. My first iPhone
app was published 15 years ago. It was written in Objective-C and the flagship iPhone at
the time was the 4s.
Just want to say that I appreciate that you're transparent about this. Not all developers
are these days.
โ 8 โ 0 โค 0
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
post-6
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ KenAKAFrosty #6 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โธ 2mo ago
I have a mac mini in transit as we speak, specifically to get into the apple ecosystem
for development, mostly with Reticulum in mind. I have an iOS device in the household
too, and I'd be happy to help! Do you have a TestFlight set up I should join, or using
the public app for now is fine?
โ 0 โ 0 โค 0
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
post-7
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Anonymous #7 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โธ 2mo ago
KenAKAFrosty wrote:
> I have a mac mini in transit as we speak, specifically to get into the apple ecosystem
for development, mostly with Reticulum in mind. I have an iOS device in the household
too, and I'd be happy to help! Do you have a TestFlight set up I should join, or
using the public app for now is fine?
Public is fine. TestFlight is a rampant pain in the ass. Thankfully, once the RFed and
Group protocols are fully locked, the scope of the app is pretty well defined. Any
changes to be made over time should be minimal or maintenance
โ 1 โ 0 โค 0
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
post-8
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ Anonymous #8 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โธ 2mo ago
joakim wrote:
> Just want to say that I appreciate that you're transparent about this. Not all
developers are these days.
Credit is not at all what's important with this project, in my view. It still takes
plenty of work. AI is still pretty dumb in a lot of ways. But my personal github account
is listed for (warrantless) accountability. I am a steward
โ 3 โ 0 โค 0
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
post-9
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ KenAKAFrosty #9 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โธ 2mo ago
Anonymous wrote:
> KenAKAFrosty wrote:
> > I have a mac mini in transit as we speak, specifically to get into the apple
ecosystem for development, mostly with Reticulum in mind. I have an iOS device in the
household too, and I&#039;d be happy to help! Do you have a TestFlight set up I
should join, or using the public app for now is fine?
>
> Public is fine. TestFlight is a rampant pain in the ass. Thankfully, once the RFed and
Group protocols are fully locked, the scope of the app is pretty well defined. Any
changes to be made over time should be minimal or maintenance
Got it! Will report back after I try this (probably later today)
โ 0 โ 0 โค 0
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
post-10
โญโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ KenAKAFrosty #10 โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โธ 2mo ago
Side quest-ion for jrl290. I'm working on a full RNS parity in Rust as well (i saw in
your repo you have your needs-focused ones) -- My question here is I'm working to get
bindings set up for maven/SPM along with some others, to help future builders in the
ecosystem. If you've already got this on your radar too then I could pivot or contribute
back to yours. If not I'll carry on, just trying to avoid too much fragmentation in the
ecosystem
โ 0 โ 0 โค 0
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Page 1 of 5
โ INFO โ Identify to this node to post. How?
bottom